import common from "../../utils/common"
const db = wx.cloud.database()
// 一个页面只需要创建一个 audio 上下文 InnerAudioContext 对象。
let audio = wx.createInnerAudioContext({
 useWebAudioImplement: true
})
let a = 0,
 wordName = {},
 word_type = []

Page({
 data: {
  popShowNot: true, // 加入生词本
  searchList: [],
  inputText: '',
  isFocus: false,
  isplay: false,
  isSearch: false
 },

 onShow: function () {
  this.getRandomWord()
 },
 /**
  * 获取随机单词
  */
 async getRandomWord() {
  if (wx.getStorageSync('randomWord')) {
   let randomWordList = await wx.getStorageSync('randomWord')
   let a = parseInt(Math.random() * randomWordList.length)
   console.log(a, randomWordList[a])
   this.setData({
    randomWord: randomWordList[a]
   })
  }
 },
 onReady: function () {
  // 绑定组件id，用于后面调用指定id组件内的方法
  this.component = this.selectComponent("#search")
 },

 /**
  * 单词输入?
  * @param {*} option 携带值
  */
 async inputMsg(option) {
  word_type = [] // 重置
  let {
   inputText
  } = this.data
  inputText = option.detail.value
  // option.detail.value
  const that = this
  if (option.detail.value != '') { // 回车值入缓存
   try {
    let value = wx.getStorageSync('history')
    if (value) {
     // 最多缓存20条记录
     that.data.searchList = JSON.parse(value).slice(0, 20)
    }
    //去重
    let index = this.data.searchList.indexOf(option.detail.value)
    if (index > -1) {
     this.data.searchList.splice(index, 1)
    }
    that.data.searchList.unshift(option.detail.value)
    wx.setStorageSync('history', JSON.stringify(that.data.searchList))
   } catch (e) {
    console.log(e)
   }
   // 搜索成功后跳转页面，并清空searchList
   this.clearList()
  } else {
   console.log(option.detail.value)
   this.clearList()
  }

  console.log('执行查询', inputText)
  this.searchMsg(inputText)

 },
 /**
  * 查询单词
  * @param {*} inputText 输入内容
  * 1. 1、根据输入词查询数据库
  * 2. 2、筛选查询到的数据
  * 3. 3、渲染数据至页面
  * 4. 4、设置音频地址
  * 5. 5、播放音频
  */
 async searchMsg(inputText) {
  if (inputText) {
   await common.qureyWordAuido(this, inputText)
   // 开始执行音频的播放
   wordName = await wx.getStorageSync('queryWord')
   console.log('wordName', wordName)
   // common.playAudioBySentence(wordName.address)
  }
 },

 // 聚焦且无输入值时显示所有历史记录，有输入值时显示包含其的所有历史记录
 showHistory(option) {
  // option.detail.value
  //获取缓存数据
  const that = this
  if (!option.detail.value) {
   try {
    let value = wx.getStorageSync('history')
    if (value) {
     that.setData({
      // 只展示5个
      searchList: JSON.parse(value).slice(0, 5)
     })
    }
   } catch (e) {}
  } else {
   this.findHistory('', option.detail.value)
  }
 },
 //点击历史记录进行填充搜索
 reSearch(e) {
  // e.currentTarget.dataset.text
  this.setData({
   inputText: e.currentTarget.dataset.text,
   // 这个聚焦方法会出现闪动的情况
   isFocus: true
  })
 },
 /**
  * 清空搜索框
  */
 clearInput(e) {
  this.setData({
   inputText: '',
   isSearch: false
  })
 },
 /**
  * 清空列表
  */
 clearList() {
  this.setData({
   searchList: []
  })
 },
 /**
  * 清空单个记录
  */
 clear(e) {
  let clearText = e.currentTarget.dataset.text
  let history = wx.getStorageSync('history')
  // return
  let newhty = JSON.parse(history).filter(item => item != clearText)
  wx.setStorageSync('history', JSON.stringify(newhty))
  console.log('重新加载记录', newhty)
  this.setData({
   searchList: newhty.splice(0, 5)
  })
 },

 // 查找搜索历史记录
 findHistory(e, param) {
  if (param || e.detail.value.length > 0) {
   this.setData({
    isSearch: true
   })
  } else {
   this.setData({
    isSearch: false
   })
  }

  // e.detail.value
  const that = this
  let temp = []
  let p = param ? param : e.detail.value
  if (p) {
   try {
    let value = wx.getStorageSync('history')
    // return
    if (value) {
     JSON.parse(value).forEach((item, index) => {
      if (item.indexOf(p) > -1) {
       temp.unshift(item)
      }
     })
    }
   } catch (e) {
    console.log(e)
   }
  } else {
   // console.log()
   temp = JSON.parse(wx.getStorageSync('history')).slice(0, 5)
  }
  that.setData({
   searchList: temp
  })
 },

 // 加入生词本
 async addWord() {
  new Promise(() => {
   let {
    content,
    _id
   } = wordName
   this.setData({
    popShowNot: false,
   })
   common.addNoteWord(wordName, content, _id)
  })

 },

 /**
  * 取消添加的单词
  */
 async cancelWord() {
  console.log(wordName._id)
  new Promise(() => {
   common.delNoteWord(wordName._id)
   this.setData({
    popShowNot: true
   })
  })
 },

 // 加入音频
 async addvdo() {
  console.log(wordName.content, wordName.id)
  await common.poppupAddVedio(wordName.content, wordName.id)
 },

 /**
  * 播放音乐
  * 1. 根据当前查询的单词，设置音频地址并播放
  */
 playvdo() {
  common.playAudioBySentence(wordName.address)
 },

 // 点击组件的灰度蒙层时，停止音乐的播放
 stopvdo() {
  common.cptstopAudio()
 },
 /**
  * 根据单词，设置音频地址并播放。同时监听音频停止事件
  */
 playAudioByWord(word) {
  audio.src = `https://dict.youdao.com/dictvoice?audio=${word}&type=2`
  audio.play()
  audio.onStop(res => {
   // 清空音频链接
   audio.src = ''
  })
 },

 /**
  * 停止音频文件
  */
 stopAudio() {
  audio.stop()
 },
 /**
  * 单词朗读
  * 1. 1、设置音频地址
  * 1. 2、播放音频
  */
 read() {
  this.playAudioByWord(this.data.word.content)
 },

 onShareAppMessage: function () {
  // 用户点击右上角分享
  return {
   title: this.inputText, // 分享标题
   desc: '您也可以分享哦', // 分享描述
   path: '', // 分享路径
  }
 },
})